In accordance with various bus protocols, a transaction may be provided from an initiator device to at least one of various target devices on a bus or interconnect. Such protocols may include peripheral component interconnect (“PCI”) or PCI-X. Each device may decode the transaction to determine if the transaction is intended for that or another device. If the transaction is intended for that device, the device may claim and process the transaction. If the transaction is not intended for that device, the device does not claim the cycle. Instead, another device may successfully decode and claim the transaction.
The PCI-X protocol specifies that the decode process take less than a specified amount of time. That decode timing may be varied as desired and, in general, is specified as “A,” “B,” “C,” or “subtractive” decoding in accordance with the PCI-X protocol. The A decoding is the fastest, while B, C and subtractive decoding permit increasingly more time in accordance with the PCI-X protocol.
PCI-X may permit error correction code (“ECC”) bits to be included with a transaction. The ECC bits may permit the target device to determine if the transaction (e.g., the address phase of the transaction) is received with or without errors. Errors (e.g., a “1” being received as a “0”, or vice versa) may be caused by any one of a variety of reasons, as would be well known. Furthermore, the ECC bits may permit the target device to correct a portion of a transaction in many instances. Thus, ECC bits permit error detection and correction. Error detection, error correction (in the event one or more bit errors are present), and address decoding all must be performed within the decode time specified by the relevant protocol. The inclusion of the ECC error detection and correction capability into the PCI-X protocol has created a situation in which decoding a transaction quickly enough has become problematic.